iT邦幫忙

2024 iThome 鐵人賽

DAY 22
0
Mobile Development

Swift iOS UIKit 初學者系列:從零開始開發互動式應用系列 第 22

【Day 22】iOS 開發實戰 - 簡易計算機 App:函數型別與 Stack View 實作

  • 分享至 

  • xImage
  •  

導言

在今天的實戰中,我們將打造一個簡易的計算機 App,藉此學習 Swift 中的 function 函數型別如何應用於運算邏輯的設計,並使用 UIKit 中的 Stack View 來實現計算機按鍵的整齊排版。這個練習不僅有助於理解 Swift 的高階特性,也能提升 UI 佈局的靈活性,進一步掌握在不同裝置上如何利用 Stack View 進行自適應佈局。

學習目標

  • 運用 function 函數型別:

    • 使用 function 函數型別來定義加、減、乘、除的基本運算。
    • 理解函數作為變數存儲和傳遞的機制,提升開發靈活性。
  • 使用 Stack View 排版:

    • 利用 Stack View 來排列按鍵,簡化 UI 佈局並增強可讀性和維護性。
    • 確保 UI 能適應不同螢幕尺寸與方向變化。

App 展示

在計算機 App 中,使用者可以點擊數字鍵和運算符號鍵,透過 function 函數型別進行加減乘除等操作。按鍵使用 Stack View 排列,按鍵排列整齊並隨螢幕自適應調整。以下是操作畫面:

實戰步驟

1. 設計 UI

在 Storyboard 中,利用 Stack View 來排列計算機的按鍵。首先,我們需要建立一個直向的 Stack View,裡面包含 5 排橫向 Stack View,分別用來排列數字鍵、運算符號和其他輔助功能按鍵(例如清除鍵、小數點鍵)。

每一行 Stack View 裡會包含多個 UIButton,這樣能確保按鍵在不同螢幕尺寸上自動調整大小。

將 Storyboard 中的按鍵與 IBAction 連接,並且實作 numberTapped、operationTapped、equalTapped 等按鍵的邏輯,分別處理數字輸入、運算符選擇和結果計算。

  • 數值輸入群
    數字 0–9 和小數點指定同一個 function:numberTapped . 會把數字顯示在上方的 label並防止多次輸入小數點,還有如果點了加減乘除後, 再按數字要清除之前的數字。

@IBAction func numberTapped(_ sender: UIButton) {
    // 處理小數點和數字輸入
}
  • 運算鍵群
    加減乘除指定同一個 function:operationTapped,

@IBAction func operationTapped(_ sender: UIButton) {
    // 選擇運算符,並記錄當前運算
}
  • 等號操作
    當按下等號時,執行指定的運算邏輯,並顯示最終結果。
@IBAction func equalTapped(_ sender: UIButton) {
    // 執行運算並顯示結果
}

2. 程式摘要

在本次實作中,function 函數型別的靈活性展現於加減乘除運算的實作中。我們定義了 currentOperation 變數來存儲目前選擇的運算符,並將運算邏輯封裝為函數,使整個程式更具可擴展性與可讀性。

private var currentOperation: ((Double, Double) -> Double)?

private func add(a: Double, b: Double) -> Double { a + b }
private func subtract(a: Double, b: Double) -> Double { a - b }
private func multiply(a: Double, b: Double) -> Double { a * b }
private func divide(a: Double, b: Double) -> Double { a / b }

當按下運算符按鍵時,根據按鍵上的符號來指定 currentOperation:

@IBAction func operationTapped(_ sender: UIButton) {
    switch operationText {
    case "+": currentOperation = add
    case "-": currentOperation = subtract
    case "*": currentOperation = multiply
    case "/": currentOperation = divide
    default: break
    }
}

在按下等號後,則會執行對應的運算函數並顯示結果:

@IBAction func equalTapped(_ sender: UIButton) {
    guard let operation = currentOperation else { return }
    let result = operation(previousNumber, currentNumber)
    displayLabel.text = "\(result)"
}

總結

透過這次的實作,我們掌握了 Swift 的 function 函數型別在運算邏輯設計中的應用,並且學習了如何使用 Stack View 排列按鍵,使 UI 具備高度的結構性和靈活性。這些技巧在日常開發中能帶來更多便利與創新應用。

擴展應用範例:

  • 購物車計算邏輯:可用於電子商務 App 中的價格、折扣、稅金等計算。
  • 遊戲分數計算:在遊戲中,透過 function 函數型別處理不同的得分規則。
  • 動態表單生成:使用 Stack View 創建自適應表單,依據使用者動態新增或調整欄位。

這些技術不僅能用於簡易計算機 App,也能應用在更多複雜的情境中,讓程式設計更加簡潔、靈活且易於維護。


上一篇
【Day 21】iOS 開發實戰 - 產品型錄 App:掌握多頁切換與互動控制項
下一篇
【Day 23】iOS 開發實戰 - 運勢占卜 App:網路資料串接與 Kingfisher 圖片加載
系列文
Swift iOS UIKit 初學者系列:從零開始開發互動式應用30
圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言